#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\..\..\windows\SYSTEM32\SHELL32.dll
#AutoIt3Wrapper_outfile=F:\豆瓣电台.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=一个嵌入豆瓣网页版的豆瓣电台，打开后自动隐藏在右下角的图标里面，建议锁定到任务栏。【双击Ctrl键为显示和隐藏界面的快捷键】
#AutoIt3Wrapper_Res_Fileversion=1.2.0.0
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Tidy_Stop_OnError=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Array.au3>
#include <Process.au3>
#include <Misc.au3>
Local $array = StringSplit(@AutoItExe, '\', 1)  ;获取文件名
$list = ProcessList($array[UBound($array) - 1])
If $list[0][0] > 1 Then  ;双击文件打开文件或者显示文件
	Send('^!{w}')
	Exit
EndIf
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

Opt("TrayIconHide", 1)  ;0为显示托盘图标【默认】  1为不显示
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
Local $n, $timer
Local $hDLL = DllOpen("user32.dll")  ;打开user32.dll 为双击Ctrl键准备

Local $oIE, $GUIActiveX, $GUI_Button_Back, $GUI_Button_Forward, $GUI_Button_Leixing, $GUI_CHECKE, $nMsg, $dispaly
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "tray")

$oIE = ObjCreate("Shell.Explorer.2")
GUICreate("豆瓣电台", 414, 181, (@DesktopWidth - 1000) / 2, (@DesktopHeight - 800) / 2, $GUI_SS_DEFAULT_GUI)  ;文件界面在显示器的位置
$GUIActiveX = GUICtrlCreateObj($oIE, -300, -310, 1024, 750)  ;文件窗口大小

GUISetState()
$oIE.navigate("http://douban.fm/partner/baidu/doubanradio")  ;豆瓣电台的网页界面
HotKeySet('^!{w}', "_start")  ;设定快捷键Ctrl+ALT+W 让上面使用
HotKeySet('{ESC}', "_hide_ck") 	;设定快捷键ESC 最小化
GUISetState(@SW_HIDE, $oIE)

While 1
	_EmptyScriptMem() ;内存释放函数
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $GUI_EVENT_MINIMIZE
			GUISetState(@SW_HIDE, $oIE)
			Opt("TrayIconHide", 0)
	EndSwitch
	If _IsPressed("A2", $hDLL) Then ;判断左边Ctrl按键是否按下
		If $n = 0 Then
			$timer = TimerInit()
			$n = 1
			While _IsPressed("A2", $hDLL) ;等待按键弹起
			WEnd
		Else
			$n = 0
			If TimerDiff($timer) < 400 Then _start() ;第二次按键按下与第一按下的时间差如果大于400毫秒
		EndIf
	EndIf
WEnd
DllClose($hDLL)

Func _start()		;设定￥display值 1则隐藏 0则显示
	If $dispaly = 1 Then
		_hide_ck()
	Else
		_show_ck()
	EndIf
EndFunc   ;==>_start

Func _show_ck()		;隐藏窗口函数
	;Global $staue = 1
	GUISetState(@SW_SHOWNORMAL, $oIE)
	Global $dispaly = 1
EndFunc   ;==>_show_ck
Func _hide_ck()		;显示窗口函数
	;Global $staue = 0
	GUISetState(@SW_HIDE, $oIE)
	Global $dispaly = 0
EndFunc   ;==>_hide_ck

Func tray()			;单击托盘图标函数
	Opt("TrayIconHide", 1)
	GUISetState(@SW_SHOW, $oIE)
	WinActivate($oIE)
EndFunc   ;==>tray

Func _EmptyScriptMem() ;对脚本内存进行释放
;~ 无论您是使用或者转载，请保留原作者(kn007)信息，谢谢！
	Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, _
			'int', False, 'int', @AutoItPID)
	Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
	DllCall("kernel32.dll", 'int', 'CloseHandle', 'int', $ai_Handle[0])
EndFunc   ;==>_EmptyScriptMem
